package com.example.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 *    为什么使用服务的名称替代url就可以实现负载均衡了呢？
 *
 * 通过反射获取到你传递过来的参数（假设传进来1），此时的url变成了：http://product-service/product?productId=1.
 * 按照规则进行切割，将product-service切割出来。
 * 根据从注册中心拉去过来的服务列表对应着的节点信息，假设1product-service对应着192.168.10.180:8081和192.168.10.180:8083。
 * 根据你1配置的负载均衡的策略去选择一个信息节点，将服务名称替换成对应的ip和端口。假设此时url变成了：
 *
 * http://192.168.10.180:8081/product?productId=1。
 *
 * 使用RestTemplate去发送请求。
 *
 * 作者：XiaoLin_Java
 * 链接：https://juejin.cn/post/7000915211439833125
 * 来源：稀土掘金
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 */
@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
